/**
 * 根据action传递的动作来操作数据
 */
import { combineReducers } from 'redux'
import { SAVE_CHAT_LIST, GET_CHAT_LIST } from './common-type'

// 用户模块
import user from './user/user'
// 聊天信息模块
const initChats = {
   chatList: [],
   newChat: {}
}
function chat(chats = initChats, action) {
   switch (action.type) {
      case SAVE_CHAT_LIST: // 保存最新发送消息对象
         chats.newChat = action.data
         return chats
      case GET_CHAT_LIST: // 获取消息列表
         // 给当前用户所有的消息排序
         action.data.chatMsgs.sort((m1, m2) => {
            return m2.create_time - m1.create_time
         })
         // 过滤掉自己的基本信息
         delete action.data.users[action.data.uId]
         // 给用户配对最新的消息，并加入到自己身上
         for (let key in action.data.users) {
            let newTargetObj = action.data.chatMsgs.find(item => {
               return item.chat_id.includes(key)
            })
            action.data.users[key].newContent = newTargetObj.content
         }
         chats.chatList = Object.values(action.data.users)
         return chats
      default:
         return chats
   }
}

// 将多个函数导出，实现模块化管理状态数据
export default combineReducers({
   user, chat
})